.Net Core C# 創建物件、 更新 DbContext、DbSet
1: 建立實體類
為Oracle的資料庫表APS_C_SRC_REPLY建立一個對應的實體類。
如以下的程式
public class ApsCSrcReply
{
public string Site { get; set; }= string.Empty; // 避免 Null 警告
public string CustomerName { get; set; }= string.Empty; // 避免 Null 警告
public DateTime DemandDate { get; set; }
public decimal DemandQty { get; set; }
}
2: 更新 DbContext
將此實體類別加入到你的DbContext:
public class ApplicationDbContext : DbContext
{
public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options) : base(options)
{
}
public DbSet<ApsCSrcReply> ApsCSrcReplies { get; set; }
}
3: 新增資料庫配置和連接字串
在appsettings.json中加入正確的連接字串,確保指向Oracle資料庫:
{
"ConnectionStrings": {
"OracleDB": "User Id=your_user_id;Password=your_password;Data Source=your_data_source;"
}
}
1.檢查連接字串:
- 如果使用 TNS 名稱,Data Source 應該是 tnsnames.ora 檔案中定義的一個條目名稱。
- 如果使用 EZConnect(沒有使用 TNS 名稱的直接連線),格式應該是 [//]host[:port][/service_name]。
- 確保 tnsnames.ora 檔案(如果你使用的是 TNS 名稱)正確配置,並且位於 Oracle 用戶端能夠存取的位置。這個檔案通常在 Oracle 安裝目錄的 network/admin 子目錄下。
- 確保 TNS_ADMIN 環境變數設定正確,指向包含 tnsnames.ora 檔案的目錄。
- 檢查 ORACLE_HOME 環境變數是否正確設置,指向Oracle 用戶端或伺服器安裝目錄。
- 如果決定使用 EZConnect,請確保連接字串格式正確,例如:Data Source=192.168.1.1:1521/orcl;
- 確保網路沒有問題,應用程式伺服器可以存取資料庫伺服器。
在Program.cs或Startup.cs中設定DbContext使用Oracle資料庫:
builder.Services.AddDbContext<ApplicationDbContext>(options =>
options.UseOracle(builder.Configuration.GetConnectionString("OracleDB")));
4: 建立一個測試API或方法來讀取數據
在Program.cs中加入一個簡單的API,用於讀取並傳回所有記錄:
app.MapGet("/api/apscreplies", async (ApplicationDbContext context) =>
{
return await context.ApsCSrcReplies.ToListAsync();
});
5: 運行和測試
執行應用程序,使用Postman或瀏覽器存取http://localhost:5000/api/apscreplies來看是否能成功返回資料庫中的資料。
DbSet 的作用和功能
這裡的 ApsCSrcReplies 屬性有以下作用:
查詢數據:
- 可以使用 LINQ 查詢來取得 APS_C_SRC_REPLY 表中的資料。例如,context.ApsCSrcReplies.Where(x => x.Site == "SomeSite") 會產生 SQL 查詢來取得 Site 列為 "SomeSite" 的所有行。
新增數據:
- 可以透過建立 ApsCSrcReply 的新實例並將其新增至 ApsCSrcReplies 來插入新行。例如,context.ApsCSrcReplies.Add(newApsCSrcReply)。
更新數據:
- 修改 ApsCSrcReply 實例的屬性並呼叫 context.SaveChanges() 會更新資料庫中對應的行。
刪除數據:
- 從 ApsCSrcReplies 移除一個實例並呼叫 context.SaveChanges() 會從資料庫中刪除對應的行。
配置DbContext
確保 ApplicationDbContext 類別已正確配置,以包含 APS_C_SRC_REPLY 表的對應。如果表名在資料庫中與類別名稱不完全相同,或希望明確指定表名和模式,可以在 OnModelCreating 方法中使用 Fluent API 進行配置:
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<APSZPLAN>(entity =>
{
entity.ToTable("APS_Z_PLAN");
// 設定複合主鍵
entity.HasKey(e => new { e.APS_PLAN_NO, e.APS_PLAN_SEQ,e.PROCESS_NAME });
});
}
留言
張貼留言